在 API 開發中,安全性是無法忽視的一個環節,無論你是開發者還是測試人員,確保 API 的安全性至關重要。而 Swagger 不僅能讓我們撰寫 API 文檔和測試 API 功能,還可以輕鬆整合 身份驗證與授權機制,讓你能進行全面的 API 安全測試。今天,我們就來聊聊如何在 Swagger 中進行 API 的安全性測試,以及如何添加身份驗證與授權機制。
在 Swagger 中測試 API 的安全性
使用 Swagger UI 自動生成的界面來檢查 API 的安全性漏洞、權限問題等。
執行 API 測試
當你打開 Swagger UI 時,右側的每個 API 都有一個可用的 "Try it out" 按鈕,這樣你可以直接在瀏覽器中測試 API 的功能。
不過,這只是功能測試,要測試 API 的安全性,我們需要進一步添加一些測試步驟,例如:
添加身份驗證與授權機制
現在我們來聊聊如何在 Swagger 中整合身份驗證(Authentication) 與授權(Authorization)機制。這些機制保護 API,防止未經授權的訪問。
範例:Bearer Token 身份驗證
以下是一個使用 Bearer Token 身份驗證的 OpenAPI 文件範例,讓我們看看如何配置它:
openapi: 3.0.0
info:
title: Secure API
version: 1.0.0
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
security:
- bearerAuth: []
paths:
/users:
get:
summary: Get all users
security:
- bearerAuth: [] # 此 API 路徑需要身份驗證
responses:
'200':
description: OK
'401':
description: Unauthorized
在 Swagger UI 中測試身份驗證
當我們在 Swagger UI 中配置好身份驗證後,你會看到右上角多了一個**「Authorize」**按鈕,點擊後可以輸入 API token 或其他授權方式的憑證。這樣,你就可以模擬真實的身份驗證場景來測試 API。
常見的身份驗證和授權方式
你可以在 Swagger 中設置 JWT token 並在測試 API 時附帶它,測試是否授權成功。
你只需要在 Swagger 文件中添加 OAuth 2.0 流程的配置,然後讓 Swagger UI 引導用戶進行 OAuth 驗證流程。
範例:OAuth 2.0
components:
securitySchemes:
oauth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://example.com/oauth/authorize
tokenUrl: https://example.com/oauth/token
scopes:
read: Grants read access
write: Grants write access
security:
- oauth2:
- read
- write
如何通過 Swagger 測試 API 的安全性?
測試授權機制是否正確運行:
可以使用不同的身份驗證令牌,測試用戶是否能夠成功地訪問不同級別的 API。例如,一個普通用戶應無法訪問只有管理員才能使用的 API。
測試 Token 的有效性:
測試過期、篡改、無效的 Token 是否會被拒絕。
模擬攻擊測試:
嘗試 SQL 注入、跨站點請求偽造(CSRF)等常見的 API 攻擊,看看 API 是否有防護措施。Swagger 本身不進行防護,但你可以通過它模擬這些攻擊來測試 API 的反應。